package com.wms.code;

import com.wms.constant.ArrivalConstant;
import com.wms.utils.DateUtils;

/**
 * 批次号生成
 */
public class BatchStrategy implements WmsCode{
    @Override
    public String generate(String currentCode) {
        //获取系统时间
        String ym= DateUtils.getYm();
        //如果为空 生成当月第一个编码
        if(null==currentCode||"".equals(currentCode)){
            return ArrivalConstant.PC+ym+ArrivalConstant.DEFAULT_SEQ;
        }
        //如果不为空 先判断指定编码与当前系统时间是否同年月
        //获取制定编码年月
        int begin=ArrivalConstant.PC.length();
        String tmp=currentCode.substring(begin,begin+ym.length());
        //如果不是同一年月 产生新的编码
        if(!ym.equals(tmp)){
            return ArrivalConstant.PC+ym+ArrivalConstant.DEFAULT_SEQ;
        }
        //获取序号
        begin=currentCode.length()-ArrivalConstant.DEFAULT_SEQ.length();
        String seq=currentCode.substring(begin);
        int num=Integer.parseInt(seq);
        num++;
        return ArrivalConstant.PC+ym+String.format("%0"+ArrivalConstant.DEFAULT_SEQ.length()+"d",num);
    }
}
